home *** CD-ROM | disk | FTP | other *** search
/ Assassins - Ultimate CD Games Collection 2 / Assassins 2 - Ultimate Games No. 2 (1995)(Weird Science)[!][Amiga-CD32-CDTV].iso / puzzles / picture_it / picture-it.amos / picture-it.amosSourceCode < prev    next >
AMOS Source Code  |  1995-01-01  |  11KB  |  504 lines

  1. Dim X(40),Y(40)
  2. Dim A$(10)
  3. Dim T$(10),PNT$(10)
  4. A$(1)="Loop:Move RX-12,RY-6,10; Move RX+12,RY+6,20;P; Jump Loop"
  5. A$(2)="Loop:Move RX-20,RY-32,14; Move RX+20,RY+32,20;P; Jump Loop"
  6. A$(3)="Loop:Move RX+40,RY-3,40; Move RX-40,RY+3,20;P; Jump Loop"
  7. A$(4)="Loop:Move RX-25,RY+70,14; Move RX+25,RY-70,50;P;P; Jump Loop"
  8. A$(5)="Loop:Move RX-112,RY-3,10; Move RX+112,RY+3,20;P; Jump Loop"
  9. A$(6)="Loop:Move RX+120,RY-52,114; Move RX-120,RY+52,80;P;P; Jump Loop"
  10. A$(7)="Loop:Move RX-180,RY-132,140; Move RX+180,RY+132,65;P; Jump Loop"
  11. A$(8)="Loop:Move RX+28,RY+102,49; Move RX-28,RY-102,22;P;P; Jump Loop"
  12. A$(9)="Loop:Move RX-20,RY+92,55; Move RX+20,RY-92,20;P; Jump Loop"
  13. A$(10)="Loop:Move RX,RY-100,100; Move RX,RY+100,20;P; Jump Loop"
  14. '
  15. M$="Loop:Let X=XM-135;Let Y=YM-50;P;Jump Loop"
  16. '
  17. Load ":sounds/PSamp.Abk"
  18. Load ":music/pi-music.abk"
  19. Screen Open 0,320,200,16,Lowres
  20. Global T,ALLWD,WEIGHT,PARTS,SCORE,TRY,DEAD,W,H,AM,DFLAG,LC,GOT1
  21. DFLAG=1 : LC=1
  22. Music 1
  23. Do 
  24.    DEAD=False
  25.    Proc TITLE
  26.    Proc HIGHTABLE[SCORE,PLYR$]
  27.    Load Iff "Pictures:scb",1
  28.    Screen Display 1,,250,320,42
  29.    Screen 1 : Flash Off : Curs Off 
  30.    Set Rainbow 0,0,62,"(1,1,12)","","(1,-4,15)"
  31.    Rainbow 0,1,251,62
  32.    Screen To Front 1
  33.    LVL=1 : SCORE=0 : TEMSCORE=0
  34.    Proc PLVL[LVL]
  35.    Proc SETUP[LVL]
  36.    Repeat 
  37.       K$=Inkey$
  38.       Inc D
  39.       If D>=10.0
  40.          Proc CLOCK : D=0
  41.       End If 
  42.       M=Mouse Key
  43.       If GOT1=False
  44.          If Bob Col(AM+1) and M=%1
  45.             Sam Play 1
  46.             For C=1.0 To AM
  47.                If Col(C)
  48.                   Amal Off C : CURRENT=C
  49.                   Proc PPIECE[CURRENT]
  50.                   GOT1=True
  51.                End If 
  52.             Next C
  53.          End If 
  54.       End If 
  55.       If GOT1
  56.          Bob CURRENT,X Bob(AM+1)-15,Y Bob(AM+1)-15,
  57.          If M=%10
  58.             If X Bob(CURRENT)<=X(CURRENT-1)+10 and X Bob(CURRENT)>=X(CURRENT-1)-10 and Y Bob(CURRENT)>=Y(CURRENT-1)-10 and Y Bob(CURRENT)<=Y(CURRENT-1)+10
  59.                Paste Bob X(CURRENT-1),Y(CURRENT-1),CURRENT : Sam Play 2
  60.                Amal Off CURRENT : Bob Off CURRENT : GOT1=False : Inc PLACED
  61.                Add SCORE,5 : Add TEMSCORE,5 : Proc PSCORE : Proc PPIECE[0]
  62.             Else 
  63.                Amal CURRENT,A$(Rnd(9)+1) : Amal On CURRENT
  64.                Proc PPIECE[0] : GOT1=False : Sam Play 3
  65.             End If 
  66.          End If 
  67.       End If 
  68.       If T>=ALLWD
  69.          Proc TLATE
  70.       End If 
  71.       If K$="q"
  72.          Goto QUIT
  73.       End If 
  74.       Synchro 
  75.       If PLACED=AM
  76.          Bell 30 : Wait 15 : Bell 50 : Wait 17 : Bell 45
  77.          Inc LVL : TRY=0 : Inc LC
  78.          For F=0 To 6
  79.             Ink F+1
  80.             Box F,F To 319-F,198-F
  81.          Next 
  82.          Wait 80
  83.          If LVL=5
  84.             Sam Play 5
  85.          End If 
  86.          If LC>30
  87.             Randomize Timer
  88.             LVL=Rnd(29)+1
  89.          End If 
  90.          If PARTS
  91.             SCORE=SCORE+(ALLWD mod T)-(WEIGHT/2)
  92.             Proc PSCORE
  93.          Else 
  94.             SCORE=SCORE+(ALLWD mod T+20)
  95.             Proc PSCORE
  96.          End If 
  97.          Proc NLWIND
  98.       End If 
  99.       Wait Vbl 
  100.    Until DEAD
  101.    QUIT:
  102.    LVL=1 : TRY=0
  103.    Screen 1
  104.    Rainbow Del 
  105.    Screen Close 1
  106.    Screen 0
  107.    Gr Writing 0
  108.    Bob Off : Amal Off : Synchro On 
  109.    Cls 0
  110.    Proc FINISH_BOW
  111.    Text 138,97,"GAME OVER"
  112.    Wait 20
  113.    Proc HIGHTABLE[SCORE,PLYR$]
  114.    Rainbow Del 2
  115.    Wait 50
  116. Loop 
  117. '  
  118. Procedure SETUP[N]
  119.    Shared A$(),M$,PLACED,TEMSCORE
  120.    PLACED=0 : T=0 : TEMSCORE=0
  121.    Load Iff "Pictures:pic"+Mid$(Str$(N),2),0
  122.    If N<=4
  123.       AM=20 : W=64 : H=50 : HW=256 : VH=150
  124.       If DFLAG=1
  125.          Proc BIG_DAT
  126.       End If 
  127.    Else 
  128.       AM=40 : W=40 : H=40 : HW=280 : VH=160
  129.       If DFLAG=2
  130.          Proc SMALL_DAT
  131.       End If 
  132.    End If 
  133.    Erase 1
  134.    Screen 0
  135.    Synchro Off : Flash Off : Hide On 
  136.    A=0.0 : I=1.0
  137.    Volume %1111,40
  138.    Repeat 
  139.       B=0.0
  140.       Repeat 
  141.          Get Bob 0,I,B,A To B+W,A+H
  142.          Add B,W : Inc I
  143.       Until B>HW
  144.       Add A,H
  145.    Until A>VH
  146.    Wait 130
  147.    Cls 0
  148.    Circle 7,7,5
  149.    Ink 5
  150.    Circle 7,7,3
  151.    Ink 1
  152.    Circle 7,7,2
  153.    Get Bob ,AM+1,0,0 To 16,16
  154.    Cls 0
  155.    GOT1=False
  156.    Double Buffer 
  157.    Make Mask 
  158.    For M=1.0 To AM
  159.       Bob M,320,200,M
  160.       Channel M To Bob M
  161.    Next 
  162.    Bob AM+1,320,256,AM+1
  163.    Channel AM+1 To Bob AM+1
  164.    Amal AM+1,M$
  165.    Randomize Timer
  166.    For M=1.0 To AM
  167.       Set Bob M,1,,
  168.       Hot Spot M,0,0
  169.       Amal M,A$(Rnd(9)+1.0)
  170.       Bob M,Rnd(240)+20.0,Rnd(120)+10.0,M
  171.    Next 
  172.    Amal On 
  173.    Screen To Front 1
  174.    Screen 1
  175.    Ink 7
  176.    Bar 41.0,9.0 To 63.0,17.0
  177.    Screen 0
  178. End Proc
  179. Procedure PSCORE
  180.    Screen 1
  181.    Ink 1,7
  182.    S$=Mid$(Str$(SCORE),2)
  183.    Text 91.0,34.0,S$
  184.    Screen 0
  185. End Proc
  186. Procedure CLOCK
  187.    Screen 1
  188.    Inc T
  189.    Ink 1,7,
  190.    T$=Mid$(Str$(T),2)
  191.    Text 41.0,16.0,T$
  192.    Screen 0
  193. End Proc
  194. Procedure PLVL[N]
  195.    Screen 1
  196.    Ink 1,7,
  197.    L$=Mid$(Str$(N),2)
  198.    Text 113.0,16.0,L$
  199.    If N=1 or N=2 Then ALLWD=90
  200.    If N=3 or N=4 Then ALLWD=85
  201.    If N=18 Then ALLWD=170
  202.    If N=23 or N=25 Then ALLWD=185
  203.    If N=10 or N=11 or N=20 or N=21 or N=22 or N=27 Then ALLWD=220
  204.    If N=5 or N=7 or N=9 or N=14 or N=15 or N=26 Then ALLWD=240
  205.    If N=13 or N=17 or N=19 or N=24 or N=28 Then ALLWD=270
  206.    If N=16 or N=12 or N=29 Then ALLWD=326
  207.    If N=6 or N=8 Then ALLWD=352
  208.    ALLWD=ALLWD+WEIGHT
  209.    Ink 7
  210.    Bar 252,28 To 275,37
  211.    Ink 1,7
  212.    AL$=Mid$(Str$(ALLWD),2)
  213.    Text 252.0,34.0,AL$
  214.    Screen 0
  215. End Proc
  216. Procedure TLATE
  217.    Shared LVL,TEMSCORE
  218.    Screen 0
  219.    Sam Play 4
  220.    Amal Off : Bob Off 
  221.    GOT1=False
  222.    Gr Writing 0
  223.    For I=1.0 To 70.0
  224.       Ink Rnd(15),Rnd(15)-1.0
  225.       Text Rnd(270)+5.0,Rnd(185),"Too Slow"
  226.    Next 
  227.    Wait 100
  228.    Cls 0
  229.    Screen 1
  230.    Add TRY,1
  231.    Ink 7
  232.    Bar 91.0,26.0 To 120.0,34.0
  233.    SCORE=SCORE-TEMSCORE
  234.    S$=Mid$(Str$(SCORE),2)
  235.    Text 91,34,S$
  236.    If TRY=3
  237.       Screen 0
  238.       Cls 0
  239.       If LVL>=3
  240.          Proc FINISH_BOW
  241.          Gr Writing 0
  242.          Text 115,97,"Go Back Two Levels"
  243.          SCORE=SCORE-100
  244.          Wait 100
  245.          Rainbow Del 2
  246.          LVL=LVL-2 : LC=LC-2
  247.          Proc PLVL[LVL] : Proc SETUP[LVL]
  248.       End If 
  249.    End If 
  250.    If TRY>3
  251.       DEAD=True : Pop Proc
  252.    Else 
  253.       Proc PLVL[LVL] : SETUP[LVL]
  254.    End If 
  255. End Proc
  256. Procedure NLWIND
  257.    Shared LVL
  258.    Screen 1
  259.    Ink 1
  260.    Text 202,15,"Press Any Key"
  261.    Repeat 
  262.       K$=Inkey$
  263.       If K$<>""
  264.          Ink 7 : Bar 200,8 To 304,17
  265.          Proc PLVL[LVL] : SETUP[LVL]
  266.       End If 
  267.    Until K$<>""
  268. End Proc
  269. Procedure PPIECE[N]
  270.    If Not PARTS Then Pop Proc
  271.    Screen 1
  272.    If N<=0
  273.       Ink 7
  274.       Bar 177,9 To 192,17
  275.    Else 
  276.       CU$=Mid$(Str$(N),2)
  277.       Text 177,16,CU$
  278.    End If 
  279.    Screen 0
  280. End Proc
  281. Procedure TITLE
  282.    Shared PLYR$
  283.    SCORE=0
  284.    Auto View Off 
  285.    Load Iff "Pictures:pickit.t",0
  286.    Double Buffer 
  287.    Flash Off : Hide On 
  288.    Set Rainbow 1,0,160,"(8,1,2)","(2,1,1)","(7,1,2)"
  289.    Rainbow 1,1,45,256
  290.    Channel 0 To Rainbow 1
  291.    Amal 0,"Loop: For RA=0 To 160; Let X=RA; P; Next RA; P;Jump Loop"
  292.    Screen Display 0,140,50,,
  293.    I=1 : A=0
  294.    Repeat 
  295.       B=0.0
  296.       Repeat 
  297.          Get Bob 0,I,B,A To B+160,A+100
  298.          Add B,160 : Inc I
  299.       Until B>180
  300.       Add A,100
  301.    Until A>150
  302.    Channel 1 To Bob 1
  303.    Channel 2 To Bob 2
  304.    Channel 3 To Bob 3
  305.    Channel 4 To Bob 4
  306.    Cls 0
  307.    View 
  308.    Auto View On 
  309.    Amal On 0
  310.    Bob 1,0,0,1
  311.    Bob 2,160,0,2
  312.    Bob 3,0,100,3
  313.    Bob 4,160,100,4
  314.    Amal 1,"Loop: Move -100,-100,150; "
  315.    Amal 2,"Loop: Move 100,-100,150; "
  316.    Amal 3,"Loop: Move -100,100,150; "
  317.    Amal 4,"Loop: Move 100,100,150; "
  318.    Repeat 
  319.    Until Mouse Key
  320.    Ink 31,0
  321.    Set Pattern 8
  322.    Bar 1,1 To 319,198
  323.    Amal Freeze 0
  324.    For I=1 To 4
  325.    Amal On I
  326.    Next 
  327.   Repeat 
  328.   Until Not Chanmv(4)
  329.       For I=1 To 4
  330.        Amal Off I
  331.         Next 
  332.         Amal On 0
  333.  Wait 50
  334.  Erase 1
  335.    Screen Open 1,300,30,4,Lowres
  336.    Screen Display 1,150,100,300,30
  337.    Curs Off 
  338.    Cls 0
  339.    Locate 0,1
  340.    Centre Border$("Enter Your Name .......... ",2)
  341.    Locate 19,1
  342.    Input ":";PLYR$
  343.    Cls 0
  344.    Curs Off 
  345.    Locate 0,1
  346.    Centre Border$("Beginer or Ace b/a ",2)
  347.    Repeat 
  348.       K$=Inkey$
  349.    Until K$<>""
  350.    If K$="b"
  351.       PARTS=True : WEIGHT=30
  352.    Else 
  353.       PARTS=False : WEIGHT=0
  354.    End If 
  355.    Cls 0
  356.    Locate 0,1
  357.    Centre Border$("Music On y/n ",2)
  358.    Repeat 
  359.       K$=Inkey$
  360.    Until K$<>""
  361.    If K$="n"
  362.       Screen Close 1
  363.       M=60
  364.       Repeat 
  365.          Mvolume M
  366.          Dec M
  367.          Wait 2
  368.       Until M=0
  369.       Music Stop 
  370.    Else 
  371.       Screen Close 1
  372.       Mvolume 40
  373.       Music 1
  374.    End If 
  375.    Screen 0
  376.    Ink 0
  377.          For F=0 To 100
  378.             Box F,F To 319-F,198-F
  379.          Next 
  380.    Amal Off 
  381.    Rainbow Del 1
  382. End Proc
  383. Procedure SMALL_DAT
  384.    Shared X(),Y()
  385.    For D=0 To 39
  386.       Read A : X(D)=A
  387.    Next 
  388.    Data 0,40,80,120,160,200,240,280
  389.    Data 0,40,80,120,160,200,240,280
  390.    Data 0,40,80,120,160,200,240,280
  391.    Data 0,40,80,120,160,200,240,280
  392.    Data 0,40,80,120,160,200,240,280
  393.    '
  394.    For D=0 To 39
  395.       Read B : Y(D)=B
  396.    Next 
  397.    '  
  398.    Data 0,0,0,0,0,0,0,0,40,40
  399.    Data 40,40,40,40,40,40,80,80,80,80
  400.    Data 80,80,80,80,120,120,120,120,120,120
  401.    Data 120,120,160,160,160,160,160,160,160,160
  402.    Restore 
  403.    DFLAG=1
  404. End Proc
  405. Procedure BIG_DAT
  406.    Shared X(),Y()
  407.    For D=0 To 19
  408.       Read A : X(D)=A
  409.    Next 
  410.    Data 0,64,128,192,256
  411.    Data 0,64,128,192,256
  412.    Data 0,64,128,192,256
  413.    Data 0,64,128,192,256
  414.    '
  415.    For D=0 To 19
  416.       Read B : Y(D)=B
  417.    Next 
  418.    Data 0,0,0,0,0
  419.    Data 50,50,50,50,50
  420.    Data 100,100,100,100,100
  421.    Data 150,150,150,150,150
  422.    Restore 
  423.    DFLAG=2
  424. End Proc
  425. Procedure FINISH_BOW
  426.    Set Rainbow 2,0,190,"","",""
  427.    Rainbow 2,0,50,190
  428.    Wave 0 To 15
  429.    TEMP1=1 : TEMP2=1
  430.    For P=89 To 0 Step -1
  431.       Rain(2,P)=TEMP2*20
  432.       Rain(2,189-P)=TEMP2*20
  433.       Play 0+(16+(P/2)),0
  434.       View 
  435.       Add TEMP1,1,1 To 8
  436.       If TEMP1=8 Then Inc TEMP2
  437.    Next 
  438. End Proc
  439. Procedure HIGHTABLE[SCR,PLYR$]
  440.    Shared T$(),PNT$(),PLYR$
  441.    Auto View Off 
  442.    Curs Off 
  443.    Screen Open 3,320,256,8,Lowres
  444.    Load Iff "Pictures:sctable",3
  445.    Screen To Front 3
  446.    Screen 3
  447.    Set Rainbow 2,1,256,"(1,1,2)","(2,1,1)","(3,1,2)"
  448.    Rainbow 2,1,40,256
  449.    Channel 0 To Rainbow 2
  450.    Amal 0,"Loop: For RA=0 To 256; Let Y=RA;Let X=RA*2; P; Next RA;P; Jump Loop"
  451.    '
  452.    Open Random 1,"Pictures:HIGHSCORE"
  453.    Field 1,10 As HIGHNAME$,7 As SCR$
  454.    '
  455.    For I=1 To 10
  456.       Get 1,I
  457.       T$(I-1)=HIGHNAME$ : PNT$(I-1)=SCR$
  458.    Next 
  459.    '
  460.    TEMP$=Str$(SCR)
  461.    For A=1 To 10
  462.       V1=Val(TEMP$) : V2=Val(PNT$(A-1))
  463.       If V1>V2
  464.          PNT$(10)=TEMP$
  465.          T$(10)=PLYR$
  466.          Put 1,9
  467.          Exit 
  468.       End If 
  469.    Next 
  470.    '
  471.    For A=0 To 9
  472.       For B=A+1 To 10
  473.          If Val(PNT$(B))>Val(PNT$(A))
  474.             Swap T$(A),T$(B) : Swap PNT$(A),PNT$(B)
  475.          End If 
  476.       Next 
  477.    Next 
  478.    '
  479.    For I=1 To 10
  480.       HIGHNAME$=T$(I-1)
  481.       SCR$=PNT$(I-1)
  482.       Put 1,I
  483.    Next 
  484.    '
  485.    Ink 1
  486.    Gr Writing 0
  487.    For I=1 To 10
  488.       Get 1,I
  489.       Text 95,74+14*I,HIGHNAME$ : Text 175,74+14*I,SCR$
  490.    Next 
  491.    Close 1
  492.    View 
  493.    Auto View On 
  494.    Amal On 0
  495.    Repeat 
  496.    Until Mouse Key
  497.    Ink 0
  498.          For F=0 To 125
  499.          Play 1,F/2,0
  500.             Box F,F To 319-F,255-F
  501.          Next 
  502.    Rainbow Del 2 : Amal Off 0
  503.    Screen Close 3
  504. End Proc